#ifndef BRAIN_H
#define BRAIN_H

#include "types.hpp"
class Neuron;

class Brain {
    uint m_nInputs;
    uint m_nNeurons;
    uint m_nNeuronsPerLayer;
    uint m_nOutputs;
    Neuron * m_inputNeurons;
    Neuron * m_bodyNeurons;
    Neuron * m_outputNeurons;
public:
    Brain ();
    Brain (uint nInputs, uint nNeuronsPerLayer, uint nLayers, uint nOutputs );
    ~Brain();
    void compute(float * inputs, float * outputs);
    int copy (Brain * source);
    void mutate (int rate);
    void crossover (Brain * parent1, Brain * parent2);
    void saveBrain(const char * filename);
    void loadBrain(const char * filename);
};
#endif

